Solution for the Laboratory 3

This is an R Markdown document including the solutions to the laboratory 3 for the Data Driven Security subject of the Master in CyberSecurity Management.

Crawling y Scrapping

Using the functions implemented in the file code.R.

source("./code.R")

1.1 Obtención de la página web

Obtenemos la página web https://www.mediawiki.org/wiki/MediaWiki

pagina_web<-Obtener_pagina_web()

1.2 Analisis de el contenido de la web

Obtenemos información de la página web, tal como el título o el dominio.

titulo<-Obtener_titulo(pagina_web)
dominio<-Obtener_dominio()

El título de la página web es MediaWiki. El dominio es www.mediawiki.org.

Estudiamos la estructura y el contenido de los datos para su posterior análisis.

1.3. Extracción de enlaces

Obtenemos los links de la página web y construimos un data frame con las URL y los textos de los enlaces. Se han eliminado aquellas observaciones que tenían cualquiera de las dos variables como NA. No se han eliminado aquellas observaciones que no tenían texto de enlace.

data_frame_enlaces <- Obtener_links(pagina_web)
summary(data_frame_enlaces)
##                                          URL     
##  /wiki/MediaWiki                           :  4  
##  /wiki/Download                            :  3  
##  https://en.wikipedia.org/wiki/Wiki        :  2  
##  https://en.wikipedia.org/wiki/Main_Page   :  2  
##  /wiki/Project:Support_desk                :  2  
##  /wiki/Special:MyLanguage/How_to_contribute:  2  
##  (Other)                                   :166  
##                            ENLACE   
##                               :  7  
##  Wikipedia                    :  2  
##  Download                     :  2  
##  Contribute                   :  2  
##  MediaWiki Stakeholders' Group:  2  
##  MediaWiki.org                :  1  
##  (Other)                      :165

1.4 Exploración de enlaces

Utilizamos la función HEAD de la librería httr y consultamos el código de retorno para cada petición hecha a cada uno de los links del data frame anterior. Antes de esto, y como tenemos URL relativas, es necesario completarlas añadiendo el dominio como prefijo, de tal manera que una dirección del tipo:

v_URL_completa <- Obtener_URL_completas(data_frame_enlaces)
df_expl_enlaces <- Explorar_enlaces(v_URL_completa)
## [1] "/wiki/EMWCon_Spring_2019"

se convierte en:

## [1] "www.mediawiki.org/wiki/EMWCon_Spring_2019/"

Obtenemos los siguientes códigos de retorno:

## [1] "200" "400" "404"

Gráficos en R

2.1 Histograma

En este histograma mostramos el número de repeticiones de cada URL, haciendo una separación entre aquellas que aparecen como URL relativas o URL absolutas en la página web de consulta. El histograma se ha hecho interactivo,; al pasar por encima de las barras muestra la URL en concreto, el número de repeticiones y si es abosluta/relativa.

Plot_histogram(df_expl_enlaces)

2.2 Un gráfico de barras

En este gráfico de barras mostramos las URLs que incluyen “ww.mediawiki.org” en el enlace, teniendo en cuenta que las relativas lo incluyen todas (ya que se completó el enlace).

Nota:“NO_WIKI” son aquellas que no incluyen “ww.mediawiki.org”

Plot_bar(df_expl_enlaces)

2.3 Pie Chart

En este gráfico se muestra el procentaje de cada uno de los códigos de retorno que nos ha devuelto las diferentes URLs.

Plot_pie(df_expl_enlaces)